/**
 * 
 */
package com.zq.utils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 *说明:
 *@version v1.0
 * @author zhangqian(mailto:739428054@qq.com)
 *	创建于:2020年4月23日下午6:15:34
 */
public class StringUtil {
	/**
	 * 判断传入的值是否有长度
	 * * StringUtil.hasLength(null) -> false
	 * StringUtil.hasLength("") -> false
	 * StringUtil.hasLength(" ") -> true
	 * StringUtil.hasLength("Hello") -> true
	 * @param src
	 * @return
	 */
	public static boolean hasLength(String src){
		if (src!=null &&src.length()>0) {
			return true;
		}
		return false;
	}
	/**
	 * * 功能：检查包含空白字符在内的字符系列长度，并处理过滤前后空格
	 * 示例：
	 * StringUtil.hasText(null) -> false
	 * StringUtil.hasText("") -> false
	 * StringUtil.hasText(" ") -> false
	 * StringUtil.hasText("Hello") -> true
	 * @param src
	 * @return
	 */
	public static boolean hasText(String src){
		if (src!=null &&src.trim().length()>0) {
			return true;
		}
		return false;
	}
	/*** 功能：验证是否为合格邮箱
	 * 示例：
	 * StringUtil.isEmail(null) -> false
	 * StringUtil.isEmail("") -> false
	 * StringUtil.isEmail("zhangqian@") -> false
	 * StringUtil.isEmail("zhangqian@sohu") -> false
 	 * StringUtil.isEmail("zhangqian@sohu.com") -> true
	 * 
	 * @param email
	 * @return
	 */
	public static boolean isEmail(String email){
		if (email!=null && email.length()>0) {
			String regex="^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
			//设置邮箱规范
			Pattern compile = Pattern.compile(regex);
			//匹配传入的值
			Matcher matcher = compile.matcher(email);
			if (matcher.matches()) {
				return true;
			}else{
				return false;
			}
		}
		return false;
		}
	/**
	 * * 功能：验证是否为合格手机号
	 * 示例：
	 * StringUtil.isPhone(null) -> false
	 * StringUtil.isPhone("") -> false
	 * StringUtil.isPhone("14312039428") -> false
	 * StringUtil.isPhone("13900139000") -> true
	 * @param phone
	 * @return
	 */
	public static boolean isPhone(String phone){
		if (phone!=null && phone.trim().length()>0) {
			String regex="^(((13[0-9])|(14[579])|(15([0-3]|[5-9]))|(16[6])|(17[0135678])|(18[0-9])|(19[89]))\\d{8})$";
			//设置电话规范
			Pattern compile = Pattern.compile(regex);
			//匹配传入的值
			Matcher matcher = compile.matcher(phone);
			if (matcher.matches()) {
				return true;
			}else{
				return false;
			}
		}
		return false;
	}
	/**
	 * * 功能：判断是否全部为字母
	 * 示例：
	 * StringUtil.isLetter(null) -> false
	 * StringUtil.isLetter("") -> false
     * StringUtil.isLetter(".com") -> false
	 * StringUtil.isLetter("howSun") -> true
	 * @param letter
	 * @return
	 */
	public static boolean isLetter(String letter){
		if (letter!=null && letter.trim().length()>0) {
			String regex="^[a-zA-Z]*$";
			Pattern compile = Pattern.compile(regex);
			//匹配传入的值
			Matcher matcher = compile.matcher(letter);
			if (matcher.matches()) {
				return true;
			}else{
				return false;
			}
			
		}
		return false;
	}
	/**
	 * 功能：隐藏字符串
	 * 示例：
	 * StringUtil.hidden("13856237928", 3,7) -> "138****7928"
	 * 参数1：src，源字符串
	 * 参数2：start，从开始的位置隐藏，如果为空，则全部不隐藏，
	 * 参数3：end，结束位置，如果为空或为-1，则直到末尾都隐藏，如果超过源字符串长度，则只到末尾
	 * @param src
	 * @param start
	 * @param end
	 * @return
	 */
	public static String hidden(String src,Integer start,Integer end){
		StringBuffer buffer = new StringBuffer();
		if (src!=null && src.length()>0) {
			if (end==null) {
				end=src.length();
			}
			char[] charArray = src.toCharArray();
			for (int i = 0; i < charArray.length; i++) {
				if (start!=null &&start<=i&&end>i) {
					buffer.append("*");
				}else{
					buffer.append(charArray[i]);
				}
			}
			return buffer.toString();
			
			
		}
		
		return "";
	}
}
